The present invention relates to the field of multimedia methods and apparatus, and more particularly to methods and apparatus allowing for synchronization and control of time-based media in a multimedia computer environment.
With regard to modern computer systems, the term multimedia is often used in referring to software for processing (e.g., creating, editing, displaying, synchronizing, etc.) one or more files of time-based data. Examples of time-based data include video sequences, audio sequences, time-recorded events such as data from measuring devices, etc. Devices (hardware or software) capable of processing multimedia data are commonly referred to as multimedia players. Typical examples include personal computers and custom CD ROM-based devices designed for such a purpose.
The time-based data is typically stored in (or on) a hardware memory device, for example the read-only memory (ROM) of a computer, a computer's magnetic disk drive, an audio or ROM compact disk (CD), video tape devices, etc. The time-based data may also be generated for processing in real time. For example, computer-generated animation image data may be generated for display from animation control data, without having previously been stored.
The type of data is its "media." That is, media defines the data. For example, digital data is comprised of the binary values 0 or 1. In order to interpret that data, a player must know which media is represented by that data. Hence, devices (principally software) capable of processing the data provided by these hardware memory devices are commonly referred to as media players.
A movie is a common metaphor used in the discussion of multimedia software and hardware. While the traditional "movie" (e.g., of the type shown in a theater) is a stream of discrete data, in time order, stored in a single format such as film, tape, optical disk, etc., multimedia "movies" need not be so organized. Rather, multimedia movies may be made up of a number of sequences whose data may be stored on disparate devices in non-sequential order. Thus, one important role for multimedia players is to organize and coordinate the processing of data.
Authors of multimedia movies (or "titles") need to control and synchronize a variety of time-based multimedia components or "players," such as audio and video streams, animation sequences, time-based scripts and full-motion movies. Rather than require the author of each application to maintain complete control over these components, many computer operating systems now include "extensions" which provide higher-level abstractions (such as clock objects and associated media "player" objects) to simplify the author's task. Examples of such systems include "Multimedia Extensions" to the Windows 3.1 operating system environment for IBM-compatible personal computers, from Microsoft Corporation, Redmond, Washington, and the "QuickTime" extension to the Apple Macintosh System 7.x system software, from Apple Computer, Inc., of Cupertino, California. QuickTime is described in detail in the QuickTime Developer's Guide, also available from Apple Computer, Inc., and which is incorporated by reference herein.
QuickTime essentially allows a multimedia player to process timebased data. Since the data are time based, QuickTime provides for the description of "time" (called time basis) for the data as well as a definition of the context for evaluating that "time." In QuickTime, a movie's or media's time basis is called its "timebase."
A timebase is essentially a vector that defines the direction and velocity of time for a movie or media. The context for a timebase is called its time coordinate system. Conceptually, a time coordinate system provides an axis for measuring time. The time coordinate system, like a geometrical axis, is divided into units of measurement by a measurement system, called a time scale.
A timebase defines a current time value and the rate at which time passes for the movie or the media, but does not define the scale. Rather, the scale is obtained from the media itself. The product of rate and the time scale is called the absolute rate, and is measured for example in units per second. Although timebases exist independent of any specific coordinate system, time values extracted from a timebase are meaningless without a time scale.
Associated with each timebase is a clock which provides the timing for the timebase. QuickTime clocks are implemented as components that are managed by a part of the QuickTime architecture referred to as the Component Manager. Clock components provide two basic services: generating time information and scheduling time-based events, called CallBack events.
Clock components themselves receive information from other elements, which they use to produce and to provide their timing information. For example, a clock component may use the Macintosh "tick" count to provide its basic timing information. Alternatively, a clock component could use some special hardware installed in the computer to provide its basic timing information.
In any event, the clock component ultimately derives its timing information from a hardware clock, either directly or indirectly. A hardware clock is generally a signal generator of the type known in the art, which emits pulses or clock "ticks" many times per second (e.g., a 1 MHz clock ticks one million times per second).
Hardware clocks are frequently associated with "counters" that keep track of units of time by incrementing their value after each clock tick of a given rate. While hardware clocks generally emit a predetermined, fixed number of ticks per second, software clocks such as clock components allow for the manipulation of various aspects or values of the clock, allowing control of rate, etc.
For example, many computer systems employ a single hardware "root clock" (and an associated counter), which is typically used as a base to which various software clocks, such as clock components, are synchronized. These software clocks must convert the time units of the RootClock (e.g., 60 ticks/sec) to their desired time units (e.g., 44,100 ticks/sec for CD-quality audio).
Both media and movies have timebases. In QuickTime, multimedia movies are comprised of one or more "tracks" which are organized references to the media from which the time-based data are obtained. Each track is associated with a single media. A movie's timebase allows the tracks to be synchronized. In QuickTime, every track begins at the same time, at the beginning of the movie. In order to "start" the data of the track at some time other than the beginning of the movie, the data are "offset" from the start of the movie. By starting each track at the same time, one aspect of synchronizing the various tracks is addressed.
Each track or media has its own timebase. Every timebase contains a rate, a start time, a stop time, a current time, and some status information. Although ultimately each timebase obtains its time values from a clock component, it may do so indirectly. A timebase may obtain its time values directly from another timebase. The timebase obtaining its time values from another timebase is referred to as a slave timebase, and the timebase providing time values to other timebases is referred to as a master timebase. A master timebase may have multiple slave timebases, but a slave timebase may have only a single master timebase. (That is, a clock can be synchronized to only one clock, but can have any number of clocks synchronized to it.)
As an example, a first media may be a stream of digitized video data, and a second media may be a stream of digitized sound data. It may be desirable to "play" the sound at a specific time in the video data stream, such as 10 seconds into the video data stream. Thus, it is useful to be able to tie one media's timebase to another media's timebase.
QuickTime provides for the creation, use, and editing of timebase values. To support the value of tying one media's timebase to another media's timebase, changes made to master timebases may ripple through to slave timebases. For example, if the current time of a master timebase is changed, the current time of the slave timebases are changed appropriately.
However, changes to timebase values do not ripple up. That is, if the current time of a slave timebase is changed, the offset between the movie start time and the data start time is changed, but the current time of the master timebase is not changed.
It will thus be appreciated that QuickTime provides an effective mechanism for controlling and synchronizing different media, despite each media having its own timebase with its own rate and offset. However, it will be appreciated that the mechanism provided by QuickTime for the synchronization of the various media is also quite complex, principally because the media and its associated timebase are conceptually different. In order to access or change the time values associated with a particular media, the timebase for the media, not the media itself, must be addressed. For example, to find out at what point in time the media is currently playing, it is necessary to obtain a reference to the media's timebase, then examine the timebase itself. This problem, of requiring indirect access to a player's time parameters, is compounded as the number of players synchronized to one another increases.
Furthermore, QuickTime requires that a movie start at time zero. This makes the task of synchronizing two movies that start at different times (i.e., each having a different zero time relative to each other) complex. For example, since a multimedia movie must start at time zero, no negative start times are allowed. While it is possible to achieve the effect of a negative start time in QuickTime, for example by creating a fictitious start time and using offsets from that start time, this is an unnecessary burden in the creation of multimedia movies. Not only must the offset between the two movies be maintained, possible different rates between the two movies must also be synchronized. These same complexities also occur when a movie is synchronized with some external media,
Finally, the timebases discussed above do not include scale. The values of time returned by a timebase are meaningless without a scale. To determine the value of time returned by a timebase, reference must be made to the media. This two-step process of getting a timebases' time imposes an arbitrary complexity upon an author of a title.
Moreover, the scheduling of future events (e.g., requesting notification when the audio player is "x" time units into the playback of a particular audio passage) is frequently inaccurate. If, as is often the case, the root clock does not operate as fast as a clock associated with a particular media player, then the system cannot accurately determine when the audio passage is at a particular point in time.
For example, if the root clock operates at 60 ticks/second, and the clock controlling the audio playback operates at 44,100 ticks/second, then the system cannot determine when the audio playback reaches audio time unit 100. A total of 735 audio time units pass between every tick of the root clock. Typically, such systems access a faster clock on the computer and approximate the point at which the desired time unit is reached. The problem is that this faster clock is not synchronized to the media player, and therefore is not necessarily accurate (due to the "drift" caused by the time taken to write to a counter).